//package com.matrix.kernel.util;
//
//import org.apache.commons.lang.StringUtils;
//import org.apache.poi.hssf.usermodel.*;
//
//import javax.servlet.http.HttpServletResponse;
//import java.io.OutputStream;
//import java.lang.reflect.Method;
//import java.util.Collection;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
///**
// * 导出Excel
// * Created by jade on 2017/6/19.
// */
//public class ExportExcel<T> {
//
//    /**
//     * 导出模板
//     * @param sheetName sheets 名称
//     * @param fileName 导出的文件名
//     * @param headers 列头名
//     * @param columns 字段名
//     * @param result 数据集合
//     * @param response HttpServletResponse
//     * @throws Exception
//     */
//    public void exportExcel(String fileName,String sheetName,
//                            String[] headers, String[] columns, Collection<T> result,
//                            HttpServletResponse response) throws Exception {
//        //声明工作薄
//        HSSFWorkbook workbook = new HSSFWorkbook();
//        //创建sheet
//        HSSFSheet sheet = workbook.createSheet(sheetName);
//        //创建第0行，填充列头
//        int index = 0;
//        this.iterationHeaders(sheet,index,headers);
//        //创建第1行，填充数据
//        this.iterationData(sheet,index,columns,result);
//
//        OutputStream out = response.getOutputStream();// 取得输出流
//        response.reset();// 清空输出流
//        response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("GBK"), "8859_1") + ".xls");// 设定输出文件头
//        response.setContentType("application/msexcel");// 定义输出类型
//        workbook.write(out);
//        out.close();
//    }
//
//
//
//    /**
//     * 遍历列头
//     * @param sheet
//     * @param index
//     * @param headers
//     */
//    private void iterationHeaders(HSSFSheet sheet,int index,String[] headers){
//        HSSFRow row = sheet.createRow(index);
//        for (int i = 0; i < headers.length; i++) {
//            HSSFCell cell = row.createCell((short) i);
//            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
//            cell.setCellValue(text);
//        }
//    }
//
//    /**
//     * 遍历数据
//     * @param sheet
//     * @param index
//     * @param columns
//     * @param result
//     * @throws Exception
//     */
//    private void iterationData(HSSFSheet sheet ,int index, String[] columns,Collection<T> result) throws Exception {
//        // 遍历集合数据，产生数据行
//        if (result != null) {
//            index++;
//            HSSFRow row = null;
//            for (T t : result) {
//                row = sheet.createRow(index);
//                index++;
//                for (short i = 0; i < columns.length; i++) {
//                    HSSFCell cell = row.createCell(i);
//                    String fieldName = columns[i];
//                    String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
//                    Class tCls = t.getClass();
//                    Method getMethod = tCls.getMethod(getMethodName, new Class[]{});
//                    // getMethod.getReturnType().isInstance(obj);
//                    Object value = getMethod.invoke(t, new Class[]{});
//
//                    this.conversionType(value,cell);
//                }
//            }
//        }
//    }
//
//    /**
//     * 数值转换
//     * @param value
//     * @param cell
//     */
//    private void conversionType(Object value,HSSFCell cell){
//        String textValue = null;
//        if (value == null) {
//            textValue = "";
//        } else {
//            //其它数据类型都当作字符串简单处理
//            textValue = value.toString();
//        }
//        if(StringUtils.isNotEmpty(textValue)){
//            Pattern p = Pattern.compile("^//d+(//.//d+)?$");
//            Matcher matcher = p.matcher(textValue);
//            if (matcher.matches()) {
//                //是数字当作double处理
//                cell.setCellValue(Double.parseDouble(textValue));
//            }else{
//                HSSFRichTextString richString = new HSSFRichTextString(textValue);
//                cell.setCellValue(richString);
//            }
//        }
//    }
//
//}
